import { ReactNode } from 'react'
import type { iconType } from '@/common/icon/index'

/*—————————————————————————————————————————————————————————— 公共接口定义文件 ——————————————————————————————————————————————————————————*/
// 用户相关业务操作
// ---------------------------------------------------------------------------------------------
// 长期存储用户信息
export interface longTimeUserInfo {
  name: string
  password: string
}

// argon2加密返回类型
export interface argon2Type {
  encoded: string
  hash: Array<number>
  hashHex: string
}

// 前端base64编码加解密函数 接口
export interface Base64EncryptionDecryption {
  <T, U>(data: T, type?: number): U | string
}

// 用户导航菜单栏定义
export interface UserMenu {
  label: string
  key: string
  icon?: iconType
  type?: 'group'
  children?: Array<UserMenu>
}

// 通用类型接口
// ---------------------------------------------------------------------------------------------
// 组件插槽内容定义
export type soltType = ReactNode | React.ReactElement

// antd组件大小类型
export type antdSize = 'small' | 'middle' | 'large'

// 组件中插槽类型定义公共接口
export interface componentsChildren {
  children?: soltType
}

// 无参数且返回类型为空的方法接口
export interface noParametersVoidFun {
  (): void
}

// 额外css和style类型公共接口
export interface styleAndCss {
  style?: React.CSSProperties // 额外style
  className?: string // 额外css
}

// 全字符串式的对象类型接口
export interface keysOfStringOnObject {
  [key: string]: string
}
